/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package adsreis.com.Controls;

import adsreis.com.Beans.OrcamentosBean;
import adsreis.com.Beans.OrcamentosdetBean;
import adsreis.com.Beans.ProdutosBean;
import adsreis.com.acessobd.AcessoMySql;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Pauroenriki
 */
public class OrcamentosControl {
    
    PreparedStatement pstm;
    ResultSet rs;
    String cadastraOrcamento = "INSERT INTO ORCAMENTO (CODORCAMENTO, IDSTATUSORCAMENTO, IDFUNCIONARIO, IDCLIENTE, IDFORMA, IDCOND, DATAORCAMENTO, DATAVALIDADE, SUBTOTAL, SERVICOTERCEIRO, MAOOBRA, DESCONTO, TOTAL, OBS) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
    String buscaUltimoCodigo = "SELECT MAX(CODORCAMENTO) AS CODORCAMENTO FROM ORCAMENTO";
    String cadastraItem = "INSERT INTO ORCAMENTODET(IDORCAMENTO, IDPRODUTO, QTDORCAMENTO) VALUES(?,?,?)";
    String deleta = "DELETE FROM ORCAMENTO WHERE CODORCAMENTO = ?";
    String consultaOrcamentos = "SELECT * FROM CONSULTAORCAMENTO" + " WHERE DATAORCAMENTO BETWEEN ? AND ? ORDER BY ORCAMENTO";
    Integer codvenda;
    Integer duplicidade;
    String consultaItens = "SELECT ORCAMENTODET.IDORCAMENTO, ORCAMENTODET.IDPRODUTO, PRODUTOS.DESCRICAO, PRODUTOS.VLRVENDA, ORCAMENTODET.QTDORCAMENTO FROM ORCAMENTODET, PRODUTOS WHERE ORCAMENTODET.IDORCAMENTO LIKE ? AND ORCAMENTODET.IDPRODUTO = PRODUTOS.CODPRODUTO";
    String busca = "SELECT * FROM PRODUTOS WHERE CODPRODUTO LIKE ? OR DESCRICAO LIKE ?";
    public static List<ProdutosBean> produtos1 = new ArrayList<>();
        String alteraStatus = "UPDATE ORCAMENTO SET IDSTATUSORCAMENTO =? WHERE CODORCAMENTO = ?";
          
    
    
    public OrcamentosControl(){
        
    }
    
    public void alterarStatus(OrcamentosBean orcamento){
        try{
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(alteraStatus);
           pstm.setInt(1, orcamento.getIDStatus());
           pstm.setInt(2,orcamento.getCodOrcamento());
           
           
           pstm.executeUpdate();
           mysql.desconectar();           
        }catch (Exception e){
            e.printStackTrace();
    }
    }
    
    
    
    
    public List<ProdutosBean> listarProdutos(String codproduto){
        
        List<ProdutosBean> produtos = new ArrayList();
        try{
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(busca);
           pstm.setString(1, codproduto);
           pstm.setString(2, codproduto);
           rs = pstm.executeQuery();
           ProdutosBean prod;
           while (rs.next()){
               prod = new ProdutosBean();
               prod.setCodProduto(rs.getString("codproduto"));
               prod.setDescricao(rs.getString("descricao"));
               //prod.setMarca(rs.getString("marca"));
               prod.setVlrCusto(rs.getDouble("vlrcusto"));              
               prod.setVlrVenda(rs.getDouble("vlrvenda"));
               //prod.setQtdEstoque(rs.getInt("qtdestoque"));
               produtos.add(prod);  
               //System.out.println(rs.getString("descricao"));
               produtos1 = produtos;
           }
           mysql.desconectar();
        }catch (Exception e){
            e.printStackTrace();
        }
        
        
        return produtos1;  
        
        
        //Vendas ven = Vendas.getInstance();
    
        
        
        
        
    }
    
    
    
    
    
    public List<OrcamentosdetBean> listarItens(Integer idorcamento){
        try {
            AcessoMySql mysql = new AcessoMySql();
            pstm = mysql.conectar().prepareStatement(consultaItens);
            
            pstm.setInt(1, idorcamento);
            rs = pstm.executeQuery();
            List<OrcamentosdetBean> orcamento = new ArrayList<>();
            while (rs.next()){
                OrcamentosdetBean ob = new OrcamentosdetBean();
                ob.setIDOrcamento(rs.getInt("orcamentodet.idorcamento"));
                ob.setIDProduto(rs.getString("orcamentodet.idproduto"));
                ob.setDescricaoproduto(rs.getString("produtos.descricao"));
                //ob.setMarca(rs.getString("produtos.marca"));
                ob.setPreco(rs.getDouble("produtos.vlrvenda"));
                ob.setQtdOrcamento(rs.getInt("orcamentodet.qtdorcamento"));
                orcamento.add(ob);
            }
            mysql.desconectar();
            return orcamento;
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return null;
    }
    
    
    public List<OrcamentosBean> listarOrcamentos(Date dataInicial, Date dataFinal){
        try {
            AcessoMySql mysql = new AcessoMySql();
            pstm = mysql.conectar().prepareStatement(consultaOrcamentos);
            pstm.setDate(1, dataInicial);
            pstm.setDate(2, dataFinal);
            rs = pstm.executeQuery();
            List<OrcamentosBean> orcamento = new ArrayList<OrcamentosBean>();
            
            //duplicidade = 1;
            //codvenda = 0;
            
            while (rs.next()){
                
                
                OrcamentosBean ob = new OrcamentosBean();
               // duplicidade = rs.getInt("orcamento");
               // if(duplicidade != codvenda){
                 
                
                
                ob.setCodOrcamento(rs.getInt("orcamento"));
                ob.setIDStatus(rs.getInt("idstatus"));
                ob.setStatusOrcamento(rs.getString("statusorcamento"));
                ob.setIDCliente(rs.getInt("idcliente"));
                ob.setNomeCli(rs.getString("nomecli"));  
                ob.setIDFuncionario(rs.getInt("idfuncionario"));
                ob.setNomeFunc(rs.getString("nomefunc"));
                //vb.setIDProduto(rs.getInt("vendas.idproduto"));
                ob.setIDForma(rs.getInt("idforma"));
                ob.setFormapgto(rs.getString("forma"));
                ob.setIDCond(rs.getInt("idcond"));
                ob.setCondpgto(rs.getString("cond"));
                ob.setDataOrcamento(rs.getDate("dataorcamento"));
                ob.setDataValidade(rs.getDate("datavencimento"));
                ob.setSubTotal(rs.getDouble("subtotal"));
                ob.setServicoTerceiro(rs.getDouble("servicoterceiro"));
                ob.setMaoObra(rs.getDouble("maoobra"));
                ob.setDesconto(rs.getDouble("desconto"));
                ob.setTotal(rs.getDouble("total"));
                ob.setObs(rs.getString("obs"));
                ob.setTelefone(rs.getString("telefone"));
                ob.setCelular(rs.getString("celular"));
                ob.setOperadora(rs.getString("operadora"));
                
                orcamento.add(ob);
                
            }
            mysql.desconectar();
            return orcamento;
        } catch (SQLException ex) {
           // ex.printStackTrace();
            ex.getMessage();
        }
        return null;
    }
    
    
    
    
    
    public void excluirOrcamento(int codorcamento){
        try{
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(deleta); 
           pstm.setInt(1, codorcamento);
           pstm.executeUpdate();
           mysql.desconectar();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    
    
    public int buscarCodigoUltimOrcamento(){
        try{
            AcessoMySql mysql = new AcessoMySql();
            pstm = mysql.conectar().prepareStatement(buscaUltimoCodigo);
            rs = pstm.executeQuery();
            if (rs.last()){
                return rs.getInt("codorcamento");                
            }
            mysql.desconectar();
        }catch (SQLException ex){
            ex.printStackTrace();
        }
        return 0;
    }
    
    public void cadastrarOrcamento(OrcamentosBean orcamento){
        try{
            AcessoMySql mysql = new AcessoMySql();
            pstm = mysql.conectar().prepareStatement(cadastraOrcamento);
            pstm.setInt(1, orcamento.getCodOrcamento());
            pstm.setInt(2, orcamento.getIDStatus());
            pstm.setInt(3, orcamento.getIDFuncionario());
            pstm.setInt(4, orcamento.getIDCliente());
            pstm.setInt(5, orcamento.getIDForma());
            pstm.setInt(6, orcamento.getIDCond());
            pstm.setDate(7, orcamento.getDataOrcamento());  
            pstm.setDate(8, orcamento.getDataValidade());
            pstm.setDouble(9, orcamento.getSubTotal());
            pstm.setDouble(10, orcamento.getServicoTerceiro());
            pstm.setDouble(11,orcamento.getMaoObra());
            pstm.setDouble(12, orcamento.getDesconto());
            pstm.setDouble(13, orcamento.getTotal());
            pstm.setString(14, orcamento.getObs());
            pstm.executeUpdate();
            mysql.desconectar();
        }catch(SQLException ex){
            ex.printStackTrace();
        }
    }
    
    
    public void cadastrarItem(OrcamentosdetBean orcamentodet){
        try{
            AcessoMySql mysql = new AcessoMySql();
            pstm = mysql.conectar().prepareStatement(cadastraItem);
            
            pstm.setInt(1, orcamentodet.getIDOrcamento());
            pstm.setString(2, orcamentodet.getIDProduto());
            pstm.setInt(3, orcamentodet.getQtdOrcamento());
            pstm.executeUpdate();
            mysql.desconectar();
        }catch(SQLException ex){
            ex.printStackTrace();
        }
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
}
